class Person {
    // 公有属性  [推荐写在这里定义属性]
    username
    // 定义属性并设置 默认值
    age = 17
    // 构造函数
    constructor(name) {
        this.name = name
    }
    // 共有方法
    sayHi () {
        console.log('hello')
    }
}
// const p = new Person('zhangsan ')
// console.log(p)

class Student extends Person {
    constructor(yyy, name) {
        super(name)
        this.yyy = yyy
    }
    init () {
        this.ppy = 'ppoi'
        console.log('init', this.name, this.age, s)
    }
}
const s = new Student('0098', 'zhah')
// s.init()

// ============= 静态属性 私有属性 ================
/**
 * 静态属性: 不能在类的实例调用静态方法 只能通过类本身调用静态方法 静态属性无所谓
 * 私有属性: 通过哈希前缀 # 是属性和方法私有 【定义和访问都需要加 # 】 不能在类的外部使用
 */

class Base {
    static age
    #love
    // constructor(name, age, love) {
    //     this.name = name
    //     this.age = age
    //     this.#love = love

    //     this.init()
    // }
    init () {
        console.log(this.name, this.age, this.#love)
        this.#run()
    }
    static say () {
        console.log('我是静态方法 只能通过Base调用',)
    }
    #run () {
        console.log('我是私有方法只能在 类内部使用')
    }
}

const base = new Base('zhangsan ', 18, 'llll')
Base.say()
base.init()
console.log(base.age)

